/*
 * Copyright (c) 2006 Monsur Hossain

 * Permission is hereby granted, free of charge, to any person obtaining a 
 * copy of this software and associated documentation files (the 
 * "Software"), to deal in the Software without restriction, including 
 * without limitation the rights to use, copy, modify, merge, publish, 
 * distribute, sublicense, and/or sell copies of the Software, and to 
 * permit persons to whom the Software is furnished to do so, subject to 
 * the following conditions:

 * The above copyright notice and this permission notice shall be included 
 * in all copies or substantial portions of the Software.

 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 
 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 
 * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 
 * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 
 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 
 * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 */
using System;
using System.Collections.Generic;
using System.Text;

namespace RhapsodyNET
{
    /// <summary>
    /// Holds a single track object from Rhapsody's Track table
    /// </summary>
    public class RhapsodyTrack
    {
        private int trackId;
        private int trackType;
        private bool inLibrary;
        private string uri;
        private DateTime dateAdded;
        private DateTime lastModified;
        private DateTime lastPlayed;
        private int playCount;
        private int rating;
        private string codec;
        private int bitrate;
        private int fileSize;
        private int sampleRate;
        private int channels;
        private double peakRms;
        private string artistName;
        private int artistID;
        private string artistDisplayName;
        private string trackArtistDisplayName;
        private string artistSortName;
        private string albumName;
        private string albumSortName;
        private int albumType;
        private int albumId;
        private string trackName;
        private string trackSortName;
        private int rhapsodyId;
        private string composerName;
        private string ensembleName;
        private string performerName;
        private int trackLength;
        private int trackNumber;
        private int totalTracks;
        private int discNumber;
        private int totalDiscs;
        private int recordingCopyright;
        private int albumArtCopyright;
        private DateTime releaseDate;
        private int parentalAdvisory;
        private bool isCompilation;
        private bool isClassical;
        private string albumArtLarge;
        private string albumArtSmall;
        private string additionalArt;
        private string artistRootGenre;
        private string artistPrimaryGenre;
        private string purchaser;
        private string storeName;
        private string trackDrmUserGuid;
        private string trackDrmGuid;
        private string comments;
        private string keywords;
        private int bpm;
        private int gain;
        private int eq;
        private string parentLabel;
        private string subLabel;
        private string mood;
        private bool drmActivated;
        private bool trackRipped;
        private string trackArtistName;
        private int trackArtistId;
        private bool userEdited;
        private int rhapsodyRights;
        private bool hasLeafLicense;

        public string MusicBrainzID
        {
            get
            {
                return String.Empty;
            }
            set
            {
            }
        }

        public bool HasLeafLicense
        {
            get { return hasLeafLicense; }
            set { hasLeafLicense = value; }
        }

        public int RhapsodyRights
        {
            get { return rhapsodyRights; }
            set { rhapsodyRights = value; }
        }

        public bool UserEdited
        {
            get { return userEdited; }
            set { userEdited = value; }
        }

        public int TrackArtistID
        {
            get { return trackArtistId; }
            set { trackArtistId = value; }
        }

        public string TrackArtistName
        {
            get { return trackArtistName; }
            set { trackArtistName = value; }
        }

        public bool TrackRipped
        {
            get { return trackRipped; }
            set { trackRipped = value; }
        }

        public bool DRMActivated
        {
            get { return drmActivated; }
            set { drmActivated = value; }
        }

        public string Mood
        {
            get { return mood; }
            set { mood = value; }
        }

        public string SubLabel
        {
            get { return subLabel; }
            set { subLabel = value; }
        }

        public string ParentLabel
        {
            get { return parentLabel; }
            set { parentLabel = value; }
        }

        public int EQ
        {
            get { return eq; }
            set { eq = value; }
        }

        public int Gain
        {
            get { return gain; }
            set { gain = value; }
        }

        public int BPM
        {
            get { return bpm; }
            set { bpm = value; }
        }

        public string Keywords
        {
            get { return keywords; }
            set { keywords = value; }
        }

        public string Comments
        {
            get { return comments; }
            set { comments = value; }
        }

        public string TrackDRMGUID
        {
            get { return trackDrmGuid; }
            set { trackDrmGuid = value; }
        }

        public string TrackDRMUserGUID
        {
            get { return trackDrmUserGuid; }
            set { trackDrmUserGuid = value; }
        }

        public string StoreName
        {
            get { return storeName; }
            set { storeName = value; }
        }

        public string Purchaser
        {
            get { return purchaser; }
            set { purchaser = value; }
        }

        public string ArtistPrimaryGenre
        {
            get { return artistPrimaryGenre; }
            set { artistPrimaryGenre = value; }
        }

        public string ArtistRootGenre
        {
            get { return artistRootGenre; }
            set { artistRootGenre = value; }
        }

        public string AdditionalArt
        {
            get { return additionalArt; }
            set { additionalArt = value; }
        }

        public string AlbumArtSmall
        {
            get { return albumArtSmall; }
            set { albumArtSmall = value; }
        }

        public string AlbumArtLarge
        {
            get { return albumArtLarge; }
            set { albumArtLarge = value; }
        }

        public bool IsClassical
        {
            get { return isClassical; }
            set { isClassical = value; }
        }

        public bool IsCompilation
        {
            get { return isCompilation; }
            set { isCompilation = value; }
        }

        public int ParentalAdvisory
        {
            get { return parentalAdvisory; }
            set { parentalAdvisory = value; }
        }

        public DateTime ReleaseDate
        {
            get { return releaseDate; }
            set { releaseDate = value; }
        }

        public int AlbumArtCopyright
        {
            get { return albumArtCopyright; }
            set { albumArtCopyright = value; }
        }

        public int RecordingCopyright
        {
            get { return recordingCopyright; }
            set { recordingCopyright = value; }
        }

        public int TotalDiscs
        {
            get { return totalDiscs; }
            set { totalDiscs = value; }
        }

        public int DiscNumber
        {
            get { return discNumber; }
            set { discNumber = value; }
        }

        public int TotalTracks
        {
            get { return totalTracks; }
            set { totalTracks = value; }
        }

        public int TrackNumber
        {
            get { return trackNumber; }
            set { trackNumber = value; }
        }

        public int TrackLength
        {
            get { return trackLength; }
            set { trackLength = value; }
        }

        public string PerformerName
        {
            get { return performerName; }
            set { performerName = value; }
        }

        public string EnsembleName
        {
            get { return ensembleName; }
            set { ensembleName = value; }
        }

        public string ComposerName
        {
            get { return composerName; }
            set { composerName = value; }
        }

        public int RhapsodyID
        {
            get { return rhapsodyId; }
            set { rhapsodyId = value; }
        }

        public string TrackSortName
        {
            get { return trackSortName; }
            set { trackSortName = value; }
        }

        public string TrackName
        {
            get { return trackName; }
            set { trackName = value; }
        }

        public int AlbumID
        {
            get { return albumId; }
            set { albumId = value; }
        }

        public int AlbumType
        {
            get { return albumType; }
            set { albumType = value; }
        }

        public string AlbumSortName
        {
            get { return albumSortName; }
            set { albumSortName = value; }
        }

        public string AlbumName
        {
            get { return albumName; }
            set { albumName = value; }
        }

        public string ArtistSortName
        {
            get { return artistSortName; }
            set { artistSortName = value; }
        }

        public string TrackArtistDisplayName
        {
            get { return trackArtistDisplayName; }
            set { trackArtistDisplayName = value; }
        }

        public string ArtistDisplayName
        {
            get { return artistDisplayName; }
            set { artistDisplayName = value; }
        }

        public int AritistID
        {
            get { return artistID; }
            set { artistID = value; }
        }

        public string ArtistName
        {
            get { return artistName; }
            set { artistName = value; }
        }

        public double PeakRms
        {
            get { return peakRms; }
            set { peakRms = value; }
        }

        public int Channels
        {
            get { return channels; }
            set { channels = value; }
        }

        public int SampleRate
        {
            get { return sampleRate; }
            set { sampleRate = value; }
        }

        public int FileSize
        {
            get { return fileSize; }
            set { fileSize = value; }
        }

        public int Bitrate
        {
            get { return bitrate; }
            set { bitrate = value; }
        }

        public string Codec
        {
            get { return codec; }
            set { codec = value; }
        }

        public int Rating
        {
            get { return rating; }
            set { rating = value; }
        }

        public int PlayCount
        {
            get { return playCount; }
            set { playCount = value; }
        }

        public DateTime LastPlayed
        {
            get { return lastPlayed; }
            set { lastPlayed = value; }
        }

        public DateTime LastModified
        {
            get { return lastModified; }
            set { lastModified = value; }
        }

        public DateTime DateAdded
        {
            get { return dateAdded; }
            set { dateAdded = value; }
        }

        public string Uri
        {
            get { return uri; }
            set { uri = value; }
        }

        public bool InLibrary
        {
            get { return inLibrary; }
            set { inLibrary = value; }
        }

        public int TrackType
        {
            get { return trackType; }
            set { trackType = value; }
        }

        public int TrackID
        {
            get { return trackId; }
            set { trackId = value; }
        }

    }
}
